Electronic Gaming Machine Automated Testing

ABSTRACT

A method for testing an electronic gaming machine includes generating a test sequence comprising tests to be conducted on the electronic gaming machine, generating a test script from the test sequence, accessing a protocol dictionary to determine values for the inputs, emulating parts of the electronic gaming machine by applying the specific values for the inputs to the electronic gaming machine, receiving outputs from the electronic gaming machine, accessing the protocol dictionary to determine conditions associated with the outputs, and interpreting the determined conditions to determine whether the criteria for appropriate operation of the electronic gaming machine has been met. The tests include a criteria indicating inappropriate or appropriate operation of the electronic gaming machine. The test script includes inputs to be applied to the electronic gaming machine. The inputs are associated with wagering game play. The values emulate parts of the electronic gaming machine.

TECHNICAL FIELD OF THE INVENTION

The present invention relates generally to gaming systems, machines, andmethods used to provide wagering games, and, more particularly, toelectronic gaming machine automated testing.

BACKGROUND

Gaming systems, machines, and methods used to provide wagering games maybe electronically implemented by mechanisms akin to traditional slotmachines. These may be referred to as “slot machines” because theycommonly show the result of a wager by displaying reels of symbols orempty spaces, and indicating a payout based on particular alignments orcombinations of the symbols or empty spaces. In an electronic slotmachine, the results may be determined by generating a random number toselect a payout from a set or range of possible payouts.

Gaming systems, machines, and methods used to provide wagering games maybe electronically implemented by instant lottery systems. These may bereferred to as “video lottery” systems because they commonly show theresult of a play in the lottery game on a video display device at theplayer terminal. In an electronic lottery gaming system, the results maybe identified by a set of electronic lottery records. The set ofelectronic lottery records may be analogous to a set of printed paperlottery game tickets. Individual lottery game play records may beassigned from the set of electronic lottery game play records in somerandom order in response to requests for plays in the lottery game. Theresult defined by an assigned electronic lottery game play record may bedisplayed at an electronic lottery player station rather than on aprinted lottery ticket. As in traditional paper lotteries, the rules bywhich the set of lottery records is created for an electronic lotterygame determines the overall prize distribution for the game. Forexample, an electronic lottery game set may include one million records,with one record associated with the top prize, ten records associatedwith a next highest prize, and so forth throughout all of the potentialresults available in the lottery game set.

Gaming systems, machines, and methods used to provide wagering games maybe electronically implemented by predetermined cards or displays andinclude a number of designations randomly arranged in a grid, matrix, orother layout of locations. The may be referred to as “bingo” systems.The game board or display may be represented by a data structure whichdefines a representation having various card or display locations anddesignations associated with the locations. For example, in atraditional bingo game sequence, a number of the predetermined bingocards are first sold for a particular bingo game. After the sale ofbingo cards is closed for a given game, designations are randomlyselected from a pool of available designations and matched to thedesignations on each bingo card that is in play in the bingo game. Thismatching of bingo designations randomly selected for a game and bingodesignations associated with a bingo card in play in the game may bereferred to as daubing the card.

SUMMARY

In one embodiment, a method for testing an electronic gaming machineincludes generating a test sequence comprising one or more tests to beconducted on the electronic gaming machine, generating a test scriptfrom the test sequence, accessing a protocol dictionary to determinevalues for the inputs, emulating one or more parts of the electronicgaming machine by applying the specific values for the inputs to theelectronic gaming machine, receiving one or more outputs from theelectronic gaming machine, accessing the protocol dictionary todetermine conditions associated with the outputs, and interpreting thedetermined conditions to determine whether the criteria for appropriateoperation of the electronic gaming machine has been met. The testsinclude a criteria indicating inappropriate or appropriate operation ofthe electronic gaming machine. The test script includes one or moreinputs to be applied to the electronic gaming machine. The one or moreinputs are associated with wagering game play. The values emulate one ormore parts of the electronic gaming machine.

In another embodiment, an article of manufacture includes a computerreadable medium and computer-executable instructions carried on thecomputer readable medium. The instructions are readable by a processor.The instructions, when read and executed, cause the processor togenerate a test sequence comprising one or more tests to be conducted onthe electronic gaming machine, generate a test script from the testsequence, access a protocol dictionary to determine values for theinputs, the values emulating one or more parts of the electronic gamingmachine, emulate one or more parts of the electronic gaming machine byapplying the values for the inputs to the electronic gaming machine,receive one or more outputs from the electronic gaming machine, accessthe protocol dictionary to determine conditions associated with theoutputs, and interpret the determined conditions to determine whetherthe criteria for appropriate operation of the electronic gaming machinehas been met. The tests include a criteria indicating inappropriate orappropriate operation of the electronic gaming machine. The test scriptincludes one or more inputs to be applied to the electronic gamingmachine. The one or more inputs are associated with wagering game play.

In yet another embodiment, a system for testing an electronic gamingmachine includes a test server comprising a server processor coupled toa server memory and a test fixture comprising an emulator. The servermemory containing instructions for causing the server processor togenerate a test sequence comprising one or more tests to be conducted onthe electronic gaming machine, generate a test script from the testsequence, the test script comprising one or more inputs to be applied tothe electronic gaming machine, access a protocol dictionary to determinevalues for the inputs, the values emulating one or more parts of theelectronic gaming machine, and communicate the values to the testfixture. The emulator is configured to emulate one or more parts of theelectronic gaming machine by applying the values for the inputs to theelectronic gaming machine, receive one or more outputs from theelectronic gaming machine, and communicate the outputs to the testserver. The server memory contains further instructions for causing theserver processor to access the protocol dictionary to determineconditions associated with the outputs and interpret the determinedconditions to determine whether the criteria for appropriate operationof the electronic gaming machine has been met. The test fixture iscommunicatively coupled to the test server. The tests include a criteriaindicating inappropriate or appropriate operation of the electronicgaming machine. The one or more inputs are associated with wagering gameplay;

In an additional embodiment, a method of determining a protocoldictionary, includes determining an input to be applied to an electronicgaming machine, applying the input to the electronic gaming machine,monitoring the application of input to the electronic gaming machine,recording the input to the electronic gaming machine in an operationaltrace, associating the operational trace with the input, and storing theassociation in the protocol dictionary. The input associated withwagering game play.

In a yet additional embodiment, a method of determining a protocoldictionary includes determining an input to be applied to an electronicgaming machine, the input associated with wagering game play, applyingthe input to the electronic gaming machine, receiving an output from theelectronic gaming machine in response to the input, recording the outputto the electronic gaming machine in an operational trace, associatingthe operational trace with the output, and storing the association inthe protocol dictionary.

BRIEF DESCRIPTION OF THE DRAWINGS

For a more complete understanding of the present invention and itsfeatures and advantages, reference is now made to the followingdescription, taken in conjunction with the accompanying drawings, inwhich:

FIG. 1 is an example and embodiment of a system for electronic gamingmachine (“EGM”) automated testing;

FIG. 2 is another illustration of a system for providing EGM automatedtesting;

FIG. 3 is an example embodiment of a system for determining a protocoldictionary for use in subsequent testing of an EGM-under-test;

FIG. 4 is an example method for applying a test to an EGM-under-test;and

FIG. 5 is an example illustration of a method for determining a protocoldictionary for translating test steps to be communicated to an EGM orfor translating test results from an EGM.

DETAILED DESCRIPTION

FIG. 1 is an example and embodiment of a system 100 for electronicgaming machine (“EGM”) automated testing. System 100 may be configuredto perform validation, verification, or other test on a wagering gamebased in an EGM. In one embodiment, system 100 may be configured to testEGM software 106. System 100 may include an EGM-under-test 102communicatively coupled to an EGM test fixture 104. EGM test fixture 104may be configured to send one or more signals, messages, or othercommunication to EGM-under-test 102. EGM-under-test 102 may beconfigured to process the signals, messages, or other communication asinput to EGM software 106. EGM-under-test 102 may be configured to sendone or more signals, messages, or other communication to EGM testfixture 104. EGM test fixture 104 may be configured to capture andprocess such signals, messages, or other communication as output of EGMsoftware 106.

System 100 may be configured to test a wagering game embodied within EGMsoftware 106. One or more different instances of EGM software 106 may betested by system 100. For example, system 100 may test an individualgame or a game based on a common software platform. EGM software 106 maybe developed as a new wagering casino game that may require testing toensure proper operation within a casino environment. EGM software 106may require testing for any suitable parameter, such as appropriateresponse to funding or defunding actions, game play, payouts, orresponse to input or output.

System 100 may provide automated testing of EGM software 106. Manualtesting may be used to test EGM software 106. However, such a method maybe slow, error-prone, or incomplete. In one embodiment, debugging ortesting hooks may be added to EGM software 106 such that EGM software106 provides particular values at particular points in the execution ofthe EGM software 106. However, such debugging or testing hooks may alterthe performance of the software and thus may be undesirable. In oneembodiment, system 100 may be configured to test EGM software 106 as EGMsoftware 106 will be deployed in an actual, production EGM. In such anembodiment, EGM software 106 may be used without any debugging ortesting hooks. System 100 may be configured to conduct full regression,automated testing of EGM software 106. System 100 may be configured touse automated testing of EGM software 106 to emulate corner or edgecases, such as where a player card or voucher would be inserted at thesame time. System 100 may provide testing of any suitable part of EGMsoftware 106, including game play, funding operations, defundingoperations, input/output controls, or payouts.

EGM-under-test 102 may include one or more modules for acceptingsignals, commands, or other communication. In one embodiment, suchmodules may be included in EGM software 106. In another embodiment, suchmodules may be external interfaces to EGM software 106. Such modules mayinclude digital-analog converters configured to transform digitalsignals to analog and vice-versa; data busses; communication ports;software and/or software application programming interfaces (APIs);digital ports; or other suitable mechanisms for communicating betweenEGM software 106 and devices external to the software. Such modules maybe present in a production EGM.

For example, EGM-under-test 102 may include a touch screen input module110 configured to accept signals, messages, or commands indicative ofinput from a touch screen. Such signals may include those that would beinput from a user playing a casino wagering game on an EGM.

EGM-under-test 102 may include a video output module configured tooutput signals, messages, or commands related to video output. Suchsignals may be associated with that sent as output to a display of anEGM from EGM software 106.

EGM-under-test 102 may include a SAS communication module 118 configuredto accept signals, messages, or commands indicative of input from an SAStest host. While SAS communication may be used, EGM 102 may include anysuitable communication module corresponding to a communication used byEGM.

EGM-under-test 102 may include a bill acceptor input module 122configured to accept signals, messages, or commands indicative of inputfrom a bill accepter on an EGM. Such signals may be associated withinserting currency into an EGM for wagering game play.

EGM-under-test 102 may include a card reader input module 126 configuredto accept signals, messages, or commands indicative of input from a cardreader on an EGM. Such signals may be associated with a player insertinga player card, used to track game play for affinity and marketingpurposes, into an EGM.

EGM-under-test 102 may include a voucher reader input module 128configured to accept signals, messages, or commands indicative of inputfrom a voucher reader on an EGM. Such signals may be associated with aplayer inserting a voucher, indicating a balance of credits or currencyavailable for wagering game play, into an EGM.

EGM-under-test 102 may include a voucher printer output module 132configured to output signals, messages, or commands indicative of outputto a voucher printer on an EGM. Such signals may be associated withoutput from EGM software 106 to refund unplayed credits on the EGM byattempting to print a voucher for a user to move credits to another EGMor take to a cashier.

EGM-under-test 102 may include a button input module 134 configured toreceive signals, messages, or commands indicative of buttons, levers, orother input of an EGM. Such signals may be associated with a userpressing buttons, pulling levers, or taking other actions on an EGM. Thebuttons may include buttons for selecting wagers, lines of game play,hold cards, or other actions for an EGM.

EGM-under-test 102 may include a lights output module 138 configured tooutput signals, messages, or commands indicative of lights displayed onan EGM. Such signals may be associated with turning lights on or off,playing sounds, or other display actions on an EGM.

EGM-under-test 102 may include a switches output module 142 configuredto output signals, messages, or commands to control switches on an EGM.Such signals may be associated with display mechanisms of an EGM, suchas spinning a wheel.

EGM-under-test 102 may include a universal serial bus (“USB”) I/O module146 configured to output signals, messages, or commands for input oroutput to accessories, communication modules, or other portions of anEGM using USB.

EGM-under-test 102 may include a mechanical reel output module 150configured to output signals, messages, or commands for mechanicalreels, which may display the result of a slot machine.

Although a particular number of modules are shown in EGM-under-test 102,any suitable kind or number may be used. The functionality of one ormore of the modules may be bundled within a fewer number of modules. Oneor more of the modules may be included within EGM software 106.

Each of such modules of EGM-under-test 102 may be communicativelycoupled to corresponding modules in test fixture 104. Test fixture 104may include any suitable number of such modules for interfacing withEGM-under-test 102. The modules may be communicatively coupled to testmodule 108.

Test fixture 104 may include test module 108. Test module may beconfigured to control or coordinate operation of test fixture 104. Testmodule 108 may be configured to send or receive signals, commands, orother communication through various modules to EGM-under-test 102.

Although a particular number of interface modules are shown in testfixture 104 for interfacing with EGM-under-test 102, any suitable kindor number may be used. The functionality of one or more of the modulesmay be bundled within a fewer number of modules. Each of the interfacesin test fixture 104 may be configured to simulate, emulate, or recordthe operation of part of a casino wagering machine or system. Suchoperations may be provided to provide a test environment forEGM-under-test 102. Each of the interfaces may include digital-analogconverters configured to transform digital signals to analog andvice-versa; power control busses; serial ports; digital input and outputlines and cards; data busses; communication ports; software and/orsoftware application programming interfaces (APIs); digital ports; orother suitable mechanisms for communicating with EGM-under-test 102.

For example, test fixture 104 may include a touch screen emulator 112configured to provide signals, messages, or commands emulating the inputof a touch screen to EGM-under-test 102. Touch screen emulator 112 maybe communicatively coupled to touch screen input module 110. Touchscreen emulator 112 may provide input from test module 108 or from othersuitable mechanisms for evaluating the operation of EGM-under-test 102.Touch screen emulator may emulate, for example, input from buttons forplacing wagers, selecting paylines, cashing out of an EGM, selectinghold cards, or other input or output associated with a user using anEGM.

Test fixture 104 may include a Virtual Network Computing(“VNC”)-Kernel-based Virtual Machine (“KVM”) switch module 116communicatively coupled to video output module 114 and configured toreceive signals, messages, or commands from video output module 114.VNC-KVM switch module 116 may provide output from touch screen inputmodule 110 to test module 108 or to other suitable mechanisms forevaluating the operation of EGM-under-test 102. VNC-KVM switch module116 may provide interactive and/or automated control of input and outputbetween a test server and an EGM-under-test. VNC-KVM switch module 116may be configured to sense digital or analog video interfaces, audio, orother user input and output.

In one embodiment, test fixture 104 may include an SAS test host 120. Inanother embodiment, test fixture 104 may be included in another portionof system 100. SAS test host 120 may be communicatively coupled to SAScommunication module 118 and configured to send and receive signals,messages, or commands to or from SAS communication module 118. SAS testhost 120 may be configured to simulate or emulate SAS communicationbetween an EGM and other portions of a casino network system. SAS testhost 120 may provide signals to or from test module or to or from othersuitable mechanisms for evaluating the operation of EGM-under-test 102.

Test fixture 104 may include a bill acceptor emulator 124communicatively coupled to bill acceptor input module 122. Bill acceptoremulator 124 may be configured to provide signals, messages, or commandsto emulate acceptance of currency at an EGM. Bill acceptor emulator 124may be configured to receive input from test module 108 or from othersuitable mechanisms for evaluating the operation of EGM-under-test 102.

Test fixture 104 may include a card reader emulator 128 configured toprovide signals, messages, or commands emulating the input of a playercard used to access an EGM to EGM-under-test 102. Card reader emulator128 may be communicatively coupled to card reader input module 126. Cardreader emulator 128 may provide input from test module 108 or from othersuitable mechanisms for evaluating the operation of EGM-under-test 102.

Test fixture 104 may include a voucher input/output (“I/O”) emulator 130configured to provide or receive signals, messages, or commandsemulating or containing vouchers for transferring funds between an EGMto EGM-under-test 102. Voucher I/O emulator 130 may be communicativelycoupled to voucher reader input module 128 and/or voucher reader outputmodule 132. Card reader emulator 118 may communicate I/O for test module108 or for other suitable mechanisms for evaluating the operation ofEGM-under-test 102.

Test fixture 104 may include a button emulator 136 configured to providesignals, messages, or commands emulating the input of a buttons on anEGM to EGM-under-test 102. Button emulator 136 may be communicativelycoupled to button input module 134. Button emulator 136 may provideinput from test module 108 or from other suitable mechanisms forevaluating the operation of EGM-under-test 102.

Test fixture 104 may include a light reader 140 configured to receivesignals, messages, or commands from lights output module 138 inEGM-under-test 102. Light reader 140 may be communicatively coupled tolights output module 138. Light reader 140 may provide output fromlights output module 138 to test module 108 or to other suitablemechanisms for evaluating the operation of EGM-under-test 102.

Test fixture 104 may include a switch reader 144 configured to receivesignals, messages, or commands from switch output module 142 inEGM-under-test 102. Switch reader 144 may be communicatively coupled toswitch output module 142. Switch reader 144 may provide output fromswitch output module 142 to test module 108 or to other suitablemechanisms for evaluating the operation of EGM-under-test 102.

Test fixture 104 may include a USB I/O emulator 148 configured to sendand receive signals, messages, or commands with USB I/O module 146 inEGM-under-test 102. USB I/O emulator 148 may be communicatively coupledto USB I/O module 146. USB I/O emulator 148 may facilitate I/O with testmodule 108 or other suitable mechanisms for evaluating the operation ofEGM-under-test 102.

Test fixture 104 may include a mechanical reel reader 152 configured toreceive signals, messages, or commands from mechanical reel outputmodule 150 in EGM-under-test 102. Mechanical reel reader 152 may becommunicatively coupled to mechanical reel output module 150. Mechanicalreel reader 152 may provide output from mechanical reel output module150 to test module 108 or to other suitable mechanisms for evaluatingthe operation of EGM-under-test 102.

Test module 108 may be configured to send or receive signals toEGM-under-test 102 through interface modules such as shown in FIG. 1 totest the operation of EGM-under-test 102. Test module 108 may beconfigured to record resulting signals from EGM-under-test 102.

Test fixture 104 may include a processor 158 coupled to a memory 162.EGM-under-test 102 may include a processor 156 coupled to a memory 160.Test module 108 may be implemented by logic or instructions resident inmemory 162 to be executed by processor 158. EGM software 106 may beimplemented by logic or instructions resident in memory 160 to beexecuted by processor 156.

Test fixture 104 may include a touch screen emulator 112 configured toprovide signals, messages, or commands emulating the input of a touchscreen to EGM-under-test 102. Touch screen emulator 112 may becommunicatively coupled to touch screen input module 110. Touch screenemulator 112 may provide input from test module 108 or from othersuitable mechanisms for evaluating the operation of EGM-under-test 102.

Processors 156, 158 may comprise, for example a microprocessor,microcontroller, digital signal processor (DSP), application specificintegrated circuit (ASIC), or any other digital or analog circuitryconfigured to interpret and/or execute program instructions and/orprocess data. In some embodiments, processors 156, 158 may interpretand/or execute program instructions and/or process data stored inmemories 160, 162. Memories 160, 162 may be configured in part or wholeas application memory, system memory, or both. Memories 160, 162 mayinclude any system, device, or apparatus configured to hold and/or houseone or more memory modules. Each memory module may include any system,device or apparatus configured to retain program instructions and/ordata for a period of time (e.g., computer-readable media).

EGM-under-test 102 may include some or all of an EGM including anycasino or wagering system configured to provide wagering or casino gameson devices such as EGMs to a user. The EGM may include any suitableelectronic device for providing wagering or casino game play, such as aslot machine, video poker machine, bingo machine, or lottery machine.

FIG. 2 is another illustration of system 100 for providing EGM automatedtesting. System 100 may include a test server 206 communicativelycoupled to test fixture 206. In one embodiment, test server 206 may becommunicatively coupled to SAS test host 120. Test server 206 may beconfigured to communicate with test fixture 104 to provide tests to beconducted on EGM-under-test 102 and to receive the results of suchtests.

Test server 206 may include any suitable components for determining andexecuting tests to be conducted upon EGM-under-test 102, including atest sequence module, test script generator 214, test result logger 226,test script interpreter 218, or result interpreter 224. Test server 206may include or may be communicatively coupled to sources of informationfor conducting tests upon EGM-under-test such as test sequence database210, results database 228, or protocol dictionary 222. Although a singletest server 206 and a certain number and kind of components and sourcesof information are shown, the functionality of test server 206 and suchcomponents and information may be implemented in any suitable number andkind of entities configured to perform the functionality describedherein.

Test server 206 may include a processor 230 coupled a memory 232. Thememory 232 may include logic or instructions to be executed to performthe functionality of test server 206 as described herein. Processor 230may comprise, for example a microprocessor, microcontroller, digitalsignal processor (DSP), application specific integrated circuit (ASIC),or any other digital or analog circuitry configured to interpret and/orexecute program instructions and/or process data. In some embodiments,processor 230 may interpret and/or execute program instructions and/orprocess data stored in memory 232. Memory 232 may be configured in partor whole as application memory, system memory, or both. Memory 232 mayinclude any system, device, or apparatus configured to hold and/or houseone or more memory modules. Each memory module may include any system,device or apparatus configured to retain program instructions and/ordata for a period of time (e.g., computer-readable media).

Test sequence module 208 may be configured to control operation of testserver 206 and provide a user interface to an operator of test server206. Test sequence module 208 may include commands, instructions, oroptions for loading tests to be conducted upon EGM-under-test 102,configuring system 100 for testing EGM-under-test 102, logging resultsfrom testing EGM-under-test 102, or any other suitable operation. Testsequence module 208 may be implemented by, for example, an application,software module, or library.

Test sequence module 208 may be communicatively coupled to test sequencedatabase 210. Test sequence module 208 may be configured to query testsequence database 210 to obtain a test sequence 212 to be conducted uponEGM-under-test 102. Test sequence module 208 may be configured toprovide operations for a user of test sequence module 208 to developtest sequence 212. Test sequence module 208 may be configured to save adeveloped or modified test sequence 212 to test sequence database 210for later use.

Test sequence database 210 may be implemented in, for example, adatabase, record, file, or any other suitable structure. Test sequencedatabase 210 may include one or more test sequences for use by testsequence module 208. Test sequence database 210 may store test sequencesaccording to the range of tests required for a given EGM. For example,all EGMs may be subject to a common set of tests, such as acceptingcurrency or affinity player cards and registering such input inavailable credit or communicating game play to a server. In anotherexample, an EGM developed from a common platform or family of EGM gamesmay be tested for a common feature, such as simulated or physical,mechanical slot machine reels. In yet another example, a particular typeof EGM game may require tests common to the type of EGM, such as a videopoker EGM requiring testing of “keep” buttons. In a still anotherexample, an EGM may require testing specific to the EGM itself asdetermined by a developer of the EGM. In one embodiment, for a given EGMa single test sequence may be created or stored. In another embodiment,multiple test sequences testing a subset of functionality may be createdor stored for a given EGM.

Test sequence 212 may include an ordered sequence of tests that may beconducted upon EGM-under-test 102. Test sequence 212 may include one ormore subsequences, which may each be stored separately in test sequencedatabase. Test sequence 212 may contain commands of input that are to bepassed to EGM-under-test 102 and may contain conditions that are to besubsequently checked after the commands are issued. The ordered sequenceof tests in test sequence 212 may include logical descriptions of thetests to be conducted upon EGM-under-test 102. Test sequence 212 mayinclude indications of multiple steps, timing, operations to beconducted with a given module of the test fixture, parameters for suchoperations, or expected outputs or output criteria. For example, testsequence 212 may include indications of a test step such as

-   -   (Simultaneously) [insert $5 bill into bill acceptor] and [swipe        player card]    -   [player logged in?]    -   [credits increased by $5?]    -   [Cash out]    -   [balance received on voucher=$5+previous balance?]    -   [reset]        Such steps may direct that a $5 bill be inserted (or emulated)        into the EGM simultaneously with a player card being swiped (or        emulated) at the EGM. After such an action, whether or not the        EGM recognizes that a player has successfully logged in to the        EGM may be tested. The available balance of credits may be        tested for an increase of $5. A cash-out command may be sent to        the EGM and the remaining balance to be printed on a printed        voucher may be tested. The system may be reset after such tests        to an original starting state.

The steps described in test sequence 212 may be implemented usingBoolean logic, execution loop logic, functions, or any suitableprogrammatic instructions. Test sequence 212 may contain elementssufficiently abstracted to enable a user of test server 206 to quicklyand efficiently create or modify test sequences.

Test sequence module 208 may be communicatively coupled to test scriptgenerator 214. Test sequence 212 may be sent by test sequence module 208to test script generator 214. Test script generator 214 may beconfigured to generate a test script based upon test sequence 212. Inone embodiment, test script generator 214 may be included within testsequence module 208 to provide operational parameters, setupinformation, headers, or other tasks associated with testingEGM-under-test 102. Test script generator 214 may be configured togenerate a test script 216 from test sequence 212. Test script generator214 may be configured to determine specific portions of EGM-under-test106 that are to be tested. For example, a test sequence 212 may indicatethat $5 may be deposited within EGM-under-test 102 for each currencyacceptance method on the EGM-under. Test script generator 214 may beconfigured to determine the methods by which EGM-under-test 102 may beconfigured to implement the deposit of $5. For example, EGM-under-test102 may be configured to accept a $5 bill from a particular make, model,or kind of bill acceptor or a bill acceptor with a particular interface.In another example, EGM-under-test 102 may be configured to accept a $5deposit from a bill collector or from a voucher reader. Test scriptgenerator 214 may generate a test script 218 identifying the specificbill acceptor used by EGM-under-test 102, the range of bill acceptorsthat may be used by EGM-under-test 102, or the range of methods—such asinsertion of a bill or insertion of a voucher—that may be used to fundgame play.

Test script generator 214 may be implemented by, for example, anapplication, software module, or library. Test script 216 may include aset of steps to be conducted for testing EGM-under-test 102 that aremore detailed compared to test sequence 212. The steps may contain, forexample, commands, functions, parameters specific to the hardware usedor emulated for EGM-under-test 102. Test script 216 may include setup,termination, or other background steps necessary to test EGM-under-test102.

Test script generator 214 may be communicatively coupled to test scriptinterpreter 218. Test script generator 214 may be configured to sendtest script 216 to test script interpreter 218. Test script interpreter218 may be configured to interpret test script 216 and communicatespecific actions to be conducted upon EGM-under-test 102 by test fixture104. Such actions may include the signals, commands, voltages, or othercommunication to be sent by test fixture 104 to EGM-under-test 102, orthe signals, commands, voltages, or other communication fromEGM-under-test 102 that will be observed or recorded by test fixture104. For example, test script 216 may designate that the bill acceptoremulator 124 of test fixture 104 should emulate acceptance of a $5 bill.Test script generator 214 may be configured to send commands to testfixture 104 to issue the specific voltages, commands, data bits, orother indicia of information to bill acceptor input module 122representing input of a $5 bill.

To interpret test script 216 and determine what signals to send to testfixture 104, test script interpreter 218 may be configured to accessprotocol dictionary 222. Protocol dictionary 222 may be implemented by adatabase, library, record, file, or any other suitable mechanism.Protocol dictionary 222 may include an association of a set of specificvoltages, commands, data bits, or other indicia of information for agiven value to be sent or received from EGM-under-test 102. Protocoldictionary 222 may include such associations indexed by EGM type,interface type, action, or any other suitable criteria.

Test script interpreter 218 may be configured to communicate specificvoltages, commands, data bits, or other information determined byinterpreting test script 216 to test fixture 104 to be applied toEGM-under-test 102. Test fixture 104 may be configured to apply thespecific voltages, commands, data bits, or other information toEGM-under-test 102 as shown in FIG. 1.

Test fixture 104 may be configured to receive voltages, commands, databits, or other information from EGM-under-test 102 as a result of testsapplied to EGM-under-test 102 as shown in FIG. 1. Test fixture 104 maybe configured to communicate such results or output values to testserver 206. Result interpreter 224 may be configured to receive suchinformation. Result interpreter 224 may be implemented by, for example,an application, software module, or library.

Result interpreter 224 may be configured to access protocol dictionary222 to interpret results received from test fixture 104. For example,test fixture 104 may return a particular data stream from printervoucher output module 132. Result interpreter 224 may be configured tolook up some or all of the data stream in protocol dictionary 222 todetermine the value of the printed voucher. For example, the particularreceived data stream may correspond to a printed voucher output of$10.30, or another particular denomination.

Result interpreter 224 may be configured to send interpreted results totest result logger 226. Test result logger 226 may be implemented by,for example, an application, software module, or library. Test resultlogger 226 may be configured to compare results from applying a test toEGM-under-test 102 against expected values. Test result logger 226 maybe configured to store results of applying tests to EGM-under-test 102in results database 228. For example, a cashed out value of creditsreceived from EGM-under-test 102 may not equal the correct, expectedamount. In such a case, a user of system 100 may be notified thatEGM-under-test 102 failed a validation test and may require additionaldebugging or troubleshooting. Results database may be implemented by adatabase, file, record, or any other suitable mechanism. Test resultlogger 226 may be configured to present test results to a user of testserver through test sequence module 208.

In operation, a user operating system 100 may apply one or more tests toan EGM-under-test 102 using a test server 206 to control a test fixture104. In one embodiment, the user may use system 100 to test theoperational validity of newly developed EGM software 106. The user mayselect various options or features on test server 206 to determine whattests to be applied to EGM-under-test 102. Test server 206 maytransform, translate, or otherwise enable the tests selected by the userof system 100 into signals, commands, or instructions recognizable byEGM-under-test 102 and causing EGM-under-test 102 to perform variousfunctions associated with an EGM. Test fixture 104 may relay the resultsof applying a test to EGM-under-test 102 to test server 206. Test server206 may interpret such results and compare the results against expectedvalues. A user of test server 206 may determine that test results meetacceptable thresholds or expected values and validate the operation ofEGM-under-test 102.

In one embodiment, a user may generate a test sequence 212 using testsequence module 208. Generating test sequence 212 may be accomplished byselecting specific functional tests to be completed by an EGM, testsspecific to EGM-under-test 102, prescribed tests for a family or type ofEGM, or other criteria. Test sequence module 208 may generate one ormore test sequences 212 and/or access a known set of test sequences fromtest sequence database 210. The user of test server 206 may retrieve aspecific test sequence 212 from test sequence database 210. Thresholdcriteria or expected results may be defined.

After one or more test sequences 212 are selected, the test sequence 212may be used to generate a test script 216 by test script generator 214.Test script generator 214 may assemble test script 216 based on stepsidentified by test sequence module 208. Test script generator 214 mayadd initialization, operational parameters, communication, and othersteps necessary to add to test sequence 212 to test EGM-under-test 102.Test script generator 214 may repeat certain steps of test sequence 212,for example, in a conditional loop or across a range of test parameters.

Test script generator 214 may create a test script 216 and communicatethe script to test script interpreter 218. Test script interpreter 218may interpret the elements of test script 216 and translate them intospecific commands, voltages, instructions, or other communicationspecific to interfaces of EGM-under-test 102 and test fixture 104. Testscript interpreter 218 may access protocol dictionary 222 to translateor interpret various portions of test script 218. Test scriptinterpreter 218 may be configured to send the resulting input commandsto test fixture 104.

When test fixture 104 receives input commands, voltages, instructions,or other communication to be applied to EGM-under-test 102, test module108 may route the appropriate communication to EGM-under-test 102through an appropriate channel or module. For example, signalsindicating user input on a touch screen may be sent through touch screenemulator 112; signals indicating communication over SAS from networkcasino components to the EGM may be sent through SAS test host 120;signals indicating bills inserted into a bill accepter may be sentthrough bill acceptor emulator 124; signals indicating swiping of a cardin a card reader may be sent through card reader emulator 128; signalsindicating insertion of a voucher into a voucher reader may be sentthrough voucher I/O emulator 130; signals indicating pressed buttons orpulled levers may be sent through button emulator 136; and/or signalsindicating USB communication through—for example—peripheral devicesconfigured to connect to an EGM may be sent through USB I/O emulator148.

EGM-under-test 102 may receive signals for testing various portions ofthe EGM and the response of the EGM software 106. EGM software 106 mayreceive such signals through the interfaces of EGM-under-test 102 as ifthe signals would be used in production on an actual EGM, such as an EGMin a casino wagering environment, although such signals may be providedinstead by test fixture 104. For example, EGM software 106 may receivesignals indicating actions on a touch screen through touch screen inputmodule 110; receive signals indicating communication over SAS throughSAS communication module 118; receive signals indicating bills insertedin a bill acceptor through bill acceptor input module 122; receivesignals indicating a card swiped on a card reader through card readerinput module 126; receive signals indicating insertion or reading avoucher through voucher reader input module 128; and/or receive signalsindicating actions on buttons through button input module 134. The EGMsoftware 106 may execute to conduct activities associated with wageringgame play, such as adding or removing credits, determining availablecredits, determining displays of the wagering game, or other suitableactivities of an EGM. EGM software 106 may operate—and thus be tested—asif EGM software 106 was deployed in a casino wagering environment.

The EGM software 106 may cause resulting signals to be sent fromEGM-under-test 102 in response to the received signals, wagering gameplay, or other determinations by EGM software 106. For example,EGM-under-test 102 may send signals indicating video output of a gameand other options to be displayed through video output module 114; sendsignals indicating communication with casino network components—such asa casino server—over SAS through SAS communication module 118; sendsignals indicating vouchers to be printed through voucher printer outputmodule 132; send signals indicating lights on the EGM to be operatedthrough lights output module 138; send signals indicating the turning-onor turning-off of switches—such as those controlling mechanical displayson the EGM—through switches output module; send signals indicating USBcommunication through USB I/O module 146; and/or send signals indicatingspinning and stopping of mechanical reels of the EGM through mechanicalreel output module 150.

EGM software 106 may send such signals through its interfaces as if thesignals would be used in production on an actual EGM, such as an EGM ina casino wagering environment, although the signals may be receivedinstead by test fixture 104. For example, test fixture may receivesignals indicating video to be displayed through VNC-KVM module 116;signals indicating SAS communication through SAS test host 120; signalsindicating vouchers to be printed through voucher I/O emulator 130;signals indicating lights to be displayed through light reader 140;signals indicating switches to be operated through switch reader 144;signals indicating USB communication through USB I/O emulator 148;and/or signals indicating the spinning and stopping of mechanical reelsthrough mechanical reel reader 152.

The nature of the signals exchanged between the interfaces ofEGM-under-test 102 and test fixture 104 may depend upon the type ofinput or output and may vary between interfaces. For example, SAScommunication between interfaces 118, 120 may be conducted using serialcommunication conforming to SAS standards. In another example, switchsignals between interfaces 142, 144 may include sets wherein each setincludes a “0” or “1” to turn a given switch on or off.

Although a certain number of interfaces are shown on EGM-under-test 102and test fixture 104, the actual organization of interfaces may includeany suitable number of interfaces or any suitable organization ofinterfaces. Signals between particular interfaces may be combined withsignals of other interfaces. For example, signals for card readers orbill acceptors as shown with interfaces 122, 124, 126, 128 may becommunicated together over USB interfaces 146, 148. In such cases, testmodule 108 and/or EGM software 106 or other portions of system 100 maydisassemble and parse the signals to obtain the specific signals for theinterfaces shown.

Test module 108, upon receipt of signals from EGM-under-test 102, maycommunicate such information as output values to test server 206. Resultinterpreter 224 may receive the output values and may interpret thesignals to determine the results as communicated by EGM software 106.Result interpreter 224 may access protocol dictionary 222 to determinethe meaning of various received signals. Result interpreter 224 may sendthe determined results to test result logger 226. Test result logger 226may store the results of the test in results database 228 and send theresults to test sequence module 212. Test sequence module 212 maydisplay the results to a user of test server 206.

The operations of designating tests, conducting the tests, and receivingthe results may happen repeatedly and in parallel with each other. Forexample, a test script 216 may indicate conditional operations, whereina result determined by result interpreter 224 may be used to determine asubsequent action to be tested upon EGM-under-test 102. Resultinterpreter 224 may send interim results to test script interpreter 218,which may send subsequent input signals to test fixture 104.

FIG. 3 is an example embodiment of a system 300 for determining aprotocol dictionary 222 for use in subsequent testing of anEGM-under-test. The system 100 of FIGS. 1-2 may rely upon determining,for a given input of EGM-under-test 102, what signals to send to theEGM-under-test 102 to stimulate operation of the EGM-under-test 102. Thesystem 100 may rely upon determining, for a given input ofEGM-under-test 102, how to interpret signals received from theEGM-under-test 102 to evaluate whether the EGM-under-test 102 hasperformed according to specifications. Such determinations andassociations may be made by the system 300 of FIG. 3 and stored inprotocol dictionary 222.

A given instance of system 300 may be used to monitor a particular EGM,a particular kind of EGM, a platform or family of EGMs wherein the EGMsshare common features or components, or an EGM with a particularcomponent such as a particular kind of interface. Operation of such asystem 300 may be used to generate a protocol dictionary 222 for theparticular EGM, particular kind of EGM, platform or family of EGMs, oran EGM with a particular component. Subsequently, the protocoldictionary 222 may be used by system 100 of FIGS. 1-2 to test anothersuch particular EGM, another EGM of the same particular kind, anotherEGM from the same platform or family, or another EGM with the particularcomponent. Development of protocol dictionary 222 may reduce the need todevelop a fully functional emulator for various parts of test fixture104. Such functionality may be used, for example, for faster developmentor when components of an EGM are developed by a third party.

System 300 may include an EGM 302 communicatively coupled to a listener354 configured to trace the operation of EGM 302 to yield an operationaltrace 356. System 300 may include a protocol discoverer 358 configuredto parse operational trace 356 to associate particular actions or inputswith elements in operational trace 356. EGM 302 may include any EGM tobe tested as described above. Protocol discoverer 358 may becommunicatively coupled to EGM 302 to input commands into EGM 302.Protocol discoverer 358 may be configured to associate an operationaltrace 356 with a previously issued input to EGM 302. Such an associationmay be stored in protocol dictionary 222.

In one embodiment, monitor 354 and/or protocol discoverer 358 may beimplemented in a test fixture or test server such as those shown inFIGS. 1 and 2. In another embodiment, monitor 354 and/or protocoldiscoverer 358 may be implemented in one or more electronic devicesseparate from the test fixture 104 or test server 106 of FIGS. 1 and 2.In such an embodiment, monitor 354 and/or protocol discoverer mayinclude a processor coupled to a memory, or reside on an electronicdevice including a processor coupled to a memory. The memory may containlogic or instructions for execution on the processor. The executedinstructions may carry out some or all of the functionality of monitor354 and/or protocol discoverer 358.

Monitor 354 may contain one or more modules, components, or electronicdevices for monitoring the communication of signals within an EGM,between an EGM and other casino entities, or between an EGM and aperipheral device. For example, monitor 354 may include a serialcommunication monitor, a USB device monitor, digital I/O boards,analog-to-digital ports and converters, a mechanical reelsmonitor-validator, or any other suitable mechanism for gatheringinformation regarding the communication of signals from the EGM.

Monitor 354 may be configured to intercept or monitor one or more suchsignals within an EGM, between an EGM and other casino entities, orbetween an EGM and a peripheral device. Monitor 354 may be configured toswitch such signals such that they are redirected to monitor 354.Monitor 354 may be configured to record such signals as a pass-throughmonitor, wherein the signals maintain their original destination.

System 300 may be configured to monitor an EGM 302 to determine entriesto populate protocol dictionary 222. As described above, EGM 302 may beselected to be monitored because the particular EGM 302 requirestesting—and thus its communications protocols need to be recorded inprotocol dictionary 222, the particular kind of EGM 302 requirestesting, the platform or family to which EGM 303 belongs requirestesting, EGMs with common features or components to EGM 302 requiretesting, or EGM 302 includes a particular component which requirestesting.

In one embodiment, EGM 302 may be implemented by EGM-under-test 102 ofFIGS. 1 and 2. In such an embodiment, protocol dictionary 222 may becreated as EGM-under-test 102 is tested. EGM 302 may be communicativelycoupled to test server 206 and/or test fixture 104 as illustrated byEGM-under-test 102 in FIGS. 1 and 2. In another embodiment, EGM 302 maybe used to establish protocol dictionary 222 so that EGM-under-test 102of FIGS. 1 and 2 may be tested.

EGM 302 may include EGM software 306 communicatively coupled to one ormore interfaces. Such interfaces may include instances of interfacessimilar to those described in FIG. 1 for EGM-under-test 102, such as atouch screen input module 310, video output module 314, SAScommunication module 318, bill acceptor input module 322, card readerinput module 326, voucher reader input module 328, voucher printeroutput module 332, button input module 334, lights output module 338,switches output module 342, USB I/O module 346, or mechanical reeloutput module 350. Such interfaces may be configured to receive or sendsignals indicative of EGM operations as described in conjunction withEGM-under-test 102 in FIG. 1.

In one embodiment, monitor 354 may be configured to monitorcommunication signals between the EGM 302 interfaces and the interfacesof a test fixture such as test fixture 104 of FIGS. 1 and 2. In such anembodiment, monitor 354 may be configured to perform monitoringoperations and protocol discoverer 358 may be configured to determineprotocol associations for an EGM-under-test. In such an embodiment, EGM302 may be implemented by such an EGM-under-test 102 shown in FIG. 1. Inanother embodiment, monitor 354 may be configured to monitorcommunication signals between EGM 302 and its components, casinoentities communicatively coupled to EGM 302, or peripheralscommunicatively coupled to EGM 302. In such an embodiment, EGM 302 maycontain or be communicatively coupled to such components, entities, orperipherals as shown in FIG. 3. For example, such signals maytransmitted between the interfaces of EGM 302 and a touch screen 312,video device 316, SAS test host 320, bill acceptor 324, card reader 328,voucher reader 330, voucher printer 331, button 336, lights 340,switches 344, USB device 348, or mechanical reels 352.

Protocol discoverer 358 may be configured to log serial communications,detect values or sequences, or determine other such output from EGM 302in response to inputs provided to EGM 302. Protocol discoverer 358 maybe configured to run a monitoring script, wherein a script of inputs isprovided to EGM 302 and the associated output recorded. The associationbetween such an input and an associated output may be stored withinprotocol discoverer. By knowing the outcome of a particular input,protocol discoverer 358 may associate the output signals in theoperational trace 356 with the known outcome. Thus, a protocol for theset of output signals may be established, associated logically with theknown condition, and stored in protocol dictionary 222. In subsequentuse of protocol dictionary 222, recognition of the same pattern ofoutput signals encountered by a test server may be used to evaluate thenature of a received output.

Monitor 302 may be configured to log the signals associated with a giveninput applied to EGM 302, applied by protocol discoverer 358. Such inputmay include pressing a button on EGM 302, sending a message from anotherentity on the casino network to the EGM, inputting currency or avoucher, or swiping a player card. Protocol discoverer may be configuredto associate the resulting operational trace with the input that wasapplied to the EGM 302. Thus, a protocol for the set of input signals asapplied to the EGM 302 may be established, associated logically with theknown input, and stored in protocol dictionary 222. In subsequent use ofprotocol dictionary 222, the set of signals associated with the knowninput may be applied to an EGM-under-test to emulate the inputoperation.

In operation, protocol discoverer 358 may issue inputs to EGM 302. Inone embodiment, protocol discoverer 358 may be operated manually by auser of system 300. In another embodiment, protocol discoverer may beoperated automatically according to a script of inputs to be applied toEGM 302.

The inputs may include, for example, using various portions of EGM 302such as causing buttons, levers, or touch screens to be pushed,communications to arrive from networked casino components, billsinserted into a bill acceptor, or a card swiped by a card reader. Suchinputs may be made through, for example, touch screen 312, SAS test host320, bill acceptor 324, card reader 328, voucher reader 330, button 336,or USB device 344. In one embodiment, wherein EGM 302 implements anEGM-under-test 102 of FIGS. 1 and 2, the inputs may be emulated.

While the inputs are sent to EGM 302, monitor 354 may monitor thespecific signals used to communicate the inputs to EGM 302. Monitor 354may record such monitored signals into operational trace 356 and provideoperational trace 356 to protocol discoverer 358. Protocol discoverer358 may associate the inputs applied to EGM 302 with the observationsfrom operational trace 356. Protocol discoverer may store suchassociations in protocol dictionary 222.

For example, protocol discoverer 358 may insert a $5 bill into EGM 302and subsequently press a cash-out button. Monitor 354 may detect thecommunication between bill acceptor 324 and bill acceptor input module322 and then the communication between touch screen 312 and touch screeninput module 310. Monitor 354 may capture the signals associated withthe input operations and record them in operational trace 356. Protocoldiscoverer 358 may parse the recorded signals from the input operationsand associate them with the commands “InsertBill 5, ‘Stack’ and “Press‘Cash Out.’”

In another example, a voucher reader 330 may have a serial interfacewith commands for controlling the voucher reader 330. Protocoldiscoverer 358 may communicate with voucher reader 330 to instructvoucher reader 330 to send a signal to the rest of EGM 302 that aparticular voucher with a given identification and a given balance hasbeen deposited. Monitor 354 may capture the signals associated with theinput operation and record the signals into operational trace 356, whichmay be parsed by protocol discoverer 358. Protocol discoverer 358 maythus have access to the commands used by voucher reader 330 itself insuch a case. After storing the association of the observed signals withthe action caused in protocol dictionary 222, a subsequent test of anEGM may be made emulating the action of the voucher reader 330 withoutrequiring the voucher reader 330 to be present.

EGM 302 may conduct various activities in response to the applied input,such as conduct a wagering game, update credits, award payouts, conductbonuses, activate peripherals, contact networked casino entities, orother suitable action. EGM 302 may provide such signals through itsinterfaces. Monitor 354 may record signals generated as a result of suchactivities. For example, monitor 354 may record output signals sent fromthe interfaces of EGM 302 to a video device 316, SAS test host 320,voucher printer 331, lights 340, switches 344, USB device 348, ormechanical reels 352. Monitor 354 may record such information inoperational trace 356 and send operational trace 356 to protocoldiscoverer 358. Protocol discoverer 358 may determine an associationbetween the input signals sent to EGM 302 and the resultant outputsignals. Protocol discoverer 358 may record such an association inprotocol dictionary 222.

FIG. 4 is an example method 400 for applying a test to anEGM-under-test. In step 405, a sequence of test steps to be applied tothe EGM may be determined. Such test steps may be abstracted to logicalsteps that may be applied to an EGM. The test sequence may be loadedfrom pre-defined or previously used test sequences. In step 410, thesequence or steps therein may be created or modified. In step 415, thetest sequence may be saved.

In step 420, a test script based upon the test sequence may begenerated. Generating the test script may include adding overhead,configuration, or initialization steps, adding loops or conditionaltests, or other tasks. In step 425, a protocol dictionary may beaccessed to determine, for a given portion of the test script, how thetest script may be represented by signals communicated to the EGM. Instep 430, the test script may be interpreted to determine the signals,timing, and other operation of sending test signals to the EGM.

In step 435, the signals may be applied to the EGM. The signals may beapplied to interfaces for, for example, bill readers, voucher readers,buttons, touch screens, SAS hosts, or other suitable interfaces. Thesignals may emulate, for example, the actions, inputs, or signals ofvarious components of the EGM, entities coupled over a network with theEGM, or peripherals connected to the EGM.

In step 440, response output signals from the EGM may be received. Aseries of such signals may be received. Such signals may be includeinformation sent from the EGM intended for various components of theEGM, entities coupled over a network with the EGM, or peripheralsconnected to the EGM.

In step 445, the protocol dictionary may be accessed to determine, for agiven received signal, the associated meaning In step 450, the receivedsignals may be translated into test results. The translation may be madebased upon references to the protocol dictionary. In step 455, thestatus of the test script may be evaluated. The test script applied tothe EGM may have conditional or iterative elements. For example, if aninput causes an acceptable response from the EGM, a second test may beapplied to the EGM by varying the input to a second value, or byconducting a second input that depended upon the first. If the testscript is not complete, then method 400 may return to step 425 andcontinue to execute the test script. If the test script is complete,then the method 400 may continue in step 460.

In step 460, the test results may be logged. In step 460, the testresults may be analyzed to determine whether the results indicate amalfunction, bug, successful operation, or other outcome.

FIG. 5 is an example illustration of a method 500 for determining aprotocol dictionary for translating test steps to be communicated to anEGM or for translating test results from an EGM. Method 500 may includeapplication of an input and/or receipt of an output.

In one embodiment, method 500 may include application of an input whoseemulation, operational trace, or protocol is unknown. In such anembodiment, method 500 may be used to determine the emulation,operational trace, or protocol of the input. Application of the inputmay be accomplished directly. Depending upon the nature of the input oroutput, such application may be accomplished manually, while in otherembodiments such application may be automated. For example, pushing abutton on an EGM may be accomplished by manually pressing the button orby programming a solenoid coupled to a test fixture to move a testingmember to press the button. In another example, a signal from a SASserver may be sent to the EGM.

In another embodiment, method 500 may include application of an inputwhose emulation, operational trace, or protocol is known. In such anembodiment, method 500 may be used to determine the emulation,operational trace, or protocol of the resulting output from such aninput.

In step 505, a series of protocols to be discovered may be determined.Each of the protocols may represent the input or output signalsassociated with an action of an EGM. The protocols may be used toemulate input to or interpret output from an EGM. Some protocols mayrequire more than one input or output step. The protocols may beconditional, iterative, or otherwise compound. In step 510, an input tobe sent to an EGM may be determined. The input to be sent may bedetermined as one of several input or output steps to be conducted inassociation with determining a protocol. The input to be sent may bedetermined by selecting a protocol to be discovered.

In step 515, it may be determined whether the input will be emulated. Inone embodiment, the input may be emulated such that signals representingthe input may be sent to the EGM without actually conducting the actionassociated with the input. For example, a bill collector may be emulatedto emulate the signal associated with inserting a certain amount ofmoney into the EGM. In another example, the input may be actuallyapplied such that signals representing the input may be sent to the EGM.For example, a button on an EGM may be pressed. The selection of whetherto emulate an input may be made based on whether protocol has beendiscovered for a given input. For example, during a first execution ofstep 515 a protocol for the input associated with pressing a button maynot be known and the input may actually be conducted, but during asecond execution of method 515 the protocol for the input may have beendiscovered and thus emulated. The protocol may have been discoveredusing the remaining steps of method 500 as described herein.

If the input is to be emulated, then in step 520 the input may beemulated and applied to the EGM. The input may be emulated by, forexample, sending signals, voltages, digital signals or data, switchsignals, electronic communication, text strings or other information tothe EGM. The emulated input may be sent through, for example, digitalinput/output boards, serial interfaces, Ethernet, SAS, or any othersuitable mechanism. To emulate the input, the protocol dictionary may beaccessed and an operational trace associated with the input may beretrieved. The operational trace may be applied to the EGM as anemulation of the input. Method 500 may then proceed to step 555.

If the input is not to be emulated, then in step 525 the input may beapplied to the EGM. In step 535, the application of input may bemonitored. In one embodiment, the application of input may be monitoredwith a pass-through technique or mechanism. For example, application ofan input configured to be input using serial communication may bemonitored with a serial listening device configured to send the input toits original destination and a copy of the input to a listening point.In another embodiment, the application of input may be redirected to alistening point. For example, application of button inputs may be wiredto be redirected to digital input boards to be monitored. In suchembodiments where inputs are redirected, method 500 might not executesteps to monitor output associated with the input.

In step 540, an operational trace of the input signals may be determinedbased on the monitored input. The operational trace may include arecording, measurement, or other indication of the input. The indicationof the input may be recorded, measured, or otherwise indicated overtime. In step 545, the operational trace may be associated with theinput. In step 550, the association of the operational trace and theinput may be stored in the protocol dictionary. Subsequent emulation ofthe input may be conducted by accessing the protocol dictionary.

In step 555, operations on the EGM may be conducted in response to theinput. For example, if a wager button is input, a wager may be made onthe EGM; if a “Spin Wheels” button is input, a wagering game may beconducted; or if currency is input, a total amount of funds availablefor wagering may be updated.

In step 560, output signals in response to such operations may begenerated and returned from the EGM. Such output signals may includevoltages, digital signals or data, switch signals, electroniccommunication, text strings or other information from EGM. In step 565,the output signals may be monitored. The output signals may be monitoredby, for example, digital input/output boards, serial interfaces,Ethernet, SAS, or any other suitable mechanism. The reception of outputsignals may be monitored with, for example, a pass-through technique ormechanism or by redirecting output to a listening point. In step 570, anoperational trace of the input signals may be determined based on themonitored output. The operational trace may include a recording,measurement, or other indication of the output. The indication of theoutput may be recorded, measured, or otherwise indicated over time.

In step 575, the operational trace may be associated with the output.Determination of the output may be made by programmatic determinationsof expected output given an input. The programmatic determinations maybe embodied in, for example, a state machine represented in logic orinstructions stored in a memory. For example, given an input of acash-out option, output signals corresponding to printing a voucher maybe expected and subsequently monitored. In step 580, the association ofthe operational trace and the output may be stored in the protocoldictionary. Subsequent interpretation of received signals correspondingto the output signals may be determined by accessing the protocoldictionary.

In step 585, it may be determined whether additional protocols, oradditional input or output steps need to be monitored. Such additionalmonitoring may be required as an additional protocol in a series ofregressive tests or learning to be determined, or as an additional inputor output as part of a compound operation. If so, the method 500 mayrepeat starting at step 510. If not, method 500 may terminate.

Methods 400 and 500 may be implemented using the system of FIGS. 1-3, orany other system operable to implement methods 400 and 500. As such, thepreferred initialization point for methods 400 and 500 and the order ofits steps may depend on the implementation chosen. In some embodiments,some steps may be optionally omitted, repeated, or combined. In someembodiments, some steps of methods 400 and 500 may be executed inparallel with other steps of methods 400 500. In certain embodiments,methods 400 and 500 may be implemented partially or fully in softwareembodied in computer-readable media.

For the purposes of this disclosure, computer-readable media may includeany instrumentality or aggregation of instrumentalities that may retaindata and/or instructions for a period of time. Computer-readable mediamay include, without limitation, storage media such as a direct accessstorage device (e.g., a hard disk drive or floppy disk), a sequentialaccess storage device (e.g., a tape disk drive), compact disk, CD-ROM,DVD, random access memory (RAM), read-only memory (ROM), electricallyerasable programmable read-only memory (EEPROM), and/or flash memory; aswell as communications media such wires, optical fibers, and otherelectromagnetic and/or optical carriers; and/or any combination of theforegoing.

Although the present disclosure has been described in detail, it shouldbe understood that various changes, substitutions, and alterations canbe made hereto without departing from the spirit and the scope of thedisclosure as defined by the appended claims.

What is claimed is:
 1. A method for testing an electronic gamingmachine, comprising: generating a test sequence comprising one or moretests to be conducted on the electronic gaming machine, the testsincluding a criteria indicating inappropriate or appropriate operationof the electronic gaming machine; generating a test script from the testsequence, the test script comprising one or more inputs to be applied tothe electronic gaming machine, the one or more inputs associated withwagering game play; accessing a protocol dictionary to determine valuesfor the inputs, the values emulating one or more parts of the electronicgaming machine; emulating one or more parts of the electronic gamingmachine by applying the specific values for the inputs to the electronicgaming machine; receiving one or more outputs from the electronic gamingmachine; accessing the protocol dictionary to determine conditionsassociated with the outputs; and interpreting the determined conditionsto determine whether the criteria for appropriate operation of theelectronic gaming machine has been met.
 2. The method of claim 1,wherein emulating one or more parts of the electronic gaming machineincludes emulating a bill acceptor.
 3. The method of claim 1, whereinemulating one or more parts of the electronic gaming machine includesemulating pressing inputs into the electronic gaming machine.
 4. Themethod of claim 1, wherein emulating one or more parts of the electronicgaming machine includes emulating communication from a casino server. 5.The method of claim 1, wherein emulating one or more parts of theelectronic gaming machine includes emulating swiping of a player card.6. The method of claim 1, wherein receiving one or more outputs from theelectronic gaming machine includes receiving outputs indicating theresult of wagering game play.
 7. An article of manufacture, comprising:a computer readable medium; and computer-executable instructions carriedon the computer readable medium, the instructions readable by aprocessor, the instructions, when read and executed, for causing theprocessor to: generate a test sequence comprising one or more tests tobe conducted on the electronic gaming machine, the tests including acriteria indicating inappropriate or appropriate operation of theelectronic gaming machine; generate a test script from the testsequence, the test script comprising one or more inputs to be applied tothe electronic gaming machine, the one or more inputs associated withwagering game play; access a protocol dictionary to determine values forthe inputs, the values emulating one or more parts of the electronicgaming machine; emulate one or more parts of the electronic gamingmachine by applying the values for the inputs to the electronic gamingmachine; receive one or more outputs from the electronic gaming machine;access the protocol dictionary to determine conditions associated withthe outputs; and interpret the determined conditions to determinewhether the criteria for appropriate operation of the electronic gamingmachine has been met.
 8. The article of claim 7, wherein emulating oneor more parts of the electronic gaming machine includes emulating a billacceptor.
 9. The article of claim 7, wherein emulating one or more partsof the electronic gaming machine includes emulating pressing inputs intothe electronic gaming machine.
 10. The article of claim 7, whereinemulating one or more parts of the electronic gaming machine includesemulating communication from a casino server.
 11. The article of claim7, wherein emulating one or more parts of the electronic gaming machineincludes emulating swiping of a player card.
 12. The article of claim 7,wherein receiving one or more outputs from the electronic gaming machineincludes receiving outputs indicating the result of wagering game play.13. A system for testing an electronic gaming machine, comprising: atest server comprising a server processor coupled to a server memory; atest fixture comprising an emulator, the test fixture communicativelycoupled to the test server; the server memory containing instructionsfor causing the server processor to: generate a test sequence comprisingone or more tests to be conducted on the electronic gaming machine, thetests including a criteria indicating inappropriate or appropriateoperation of the electronic gaming machine; generate a test script fromthe test sequence, the test script comprising one or more inputs to beapplied to the electronic gaming machine, the one or more inputsassociated with wagering game play; access a protocol dictionary todetermine values for the inputs, the values emulating one or more partsof the electronic gaming machine; and communicate the values to the testfixture; the emulator configured to: emulate one or more parts of theelectronic gaming machine by applying the values for the inputs to theelectronic gaming machine; receive one or more outputs from theelectronic gaming machine; and communicate the outputs to the testserver; the server memory containing further instructions for causingthe server processor to: access the protocol dictionary to determineconditions associated with the outputs; and interpret the determinedconditions to determine whether the criteria for appropriate operationof the electronic gaming machine has been met.
 14. The system of claim13, wherein the emulator is configured to emulate a bill acceptor. 15.The system of claim 13, wherein the emulator is configured to emulatepressing inputs into the electronic gaming machine.
 16. The system ofclaim 13, wherein the emulator is configured to emulate communicationfrom a casino server.
 17. The system of claim 13, wherein the emulatoris configured to emulate swiping of a player card.
 18. The system ofclaim 13, wherein receiving one or more outputs from the electronicgaming machine includes receiving outputs indicating the result ofwagering game play.
 19. A method of determining a protocol dictionary,comprising: determining an input to be applied to an electronic gamingmachine, the input associated with wagering game play; applying theinput to the electronic gaming machine; monitoring the application ofinput to the electronic gaming machine; recording the input to theelectronic gaming machine in an operational trace; associating theoperational trace with the input; and storing the association in theprotocol dictionary.
 20. A method of determining a protocol dictionary,comprising: determining an input to be applied to an electronic gamingmachine, the input associated with wagering game play; applying theinput to the electronic gaming machine; receiving an output from theelectronic gaming machine in response to the input; recording the outputto the electronic gaming machine in an operational trace; associatingthe operational trace with the output; and storing the association inthe protocol dictionary.